package com.example.demo.huawei;

import java.util.Scanner;

/**
 * 分割均衡字符串（只包含两种字符串 两种字符个数相同）
 * 给一个均衡字符串 求分割成均衡子串的最大个数
 * 只包含大写 X Y
 * 输入 XXYYXY
 * 输出 2
 * XXYY XY 所以个数为2
 */
public class Main530 {
    public static void main(String[] args) {
//        int i = maxSub("XXYYXY");
        Scanner scanner = new Scanner(System.in);
        String s = scanner.nextLine();
        int i = maxSub(s);
        System.out.println(i);
    }


    //方法一：贪心
    //根据题意，对于一个平衡字符串 s，若 s 能从中间某处分割成左右两个子串，
    // 若其中一个是平衡字符串，则另一个的 L 和 R 字符的数量必然是相同的，所以也一定是平衡字符串。
    //
    //为了最大化分割数量，我们可以不断循环，每次从 s 中分割出一个最短的平衡前缀，
    // 由于剩余部分也是平衡字符串，我们可以将其当作 s 继续分割，直至 s 为空时，结束循环。
    //
    //代码实现中，可以在遍历 s 时用一个变量 d 维护 L 和 R 字符的数量之差，
    // 当 d=0 时就说明找到了一个平衡字符串，将答案加一。
    private static int maxSub(String s) {
        int count = 0; // 用于记录找到的均衡子串的数量
        int balance = 0; // 用于追踪当前的均衡状态

        // 遍历字符串的每个字符
        for (char c : s.toCharArray()) {
            if (c == 'L') {
                balance++; // 遇到 'X'，增加平衡计数
            } else if (c == 'R') {
                balance--; // 遇到 'Y'，减少平衡计数
            }

            // 当平衡计数为0时，说明找到了一个均衡子串
            if (balance == 0) {
                count++;
            }
        }

        return count; // 返回均衡子串的数量
    }


}
